/* 
 * File:   Posicion.cpp
 * Author: 75.02 - Grupo 7, 2do cuatrimestre 2012.
 * 
 * Created on 31 de octubre de 2012, 18:48
 */

#include "Posicion.h"
using namespace TP::Juego::Motorizacion::Fisica;

Posicion::Posicion () : Vector2D () {}

Posicion::Posicion (unsigned int pX, unsigned int pY) : Vector2D(){
	X(pX);
	Y(pY);
//    Vector2D::X(pX);
//    Vector2D::Y(pY);
}

Posicion::~Posicion(){}

string Posicion::aXML(){

    TiXmlDocument* doc = new TiXmlDocument();
    TiXmlDeclaration * decl = new TiXmlDeclaration( "1.0", "", "" );
    doc->LinkEndChild( decl );
    
    doc->LinkEndChild(this->aElementoXML());

    TiXmlPrinter printer;
    doc->Accept(&printer);
    return printer.CStr();    
}

string Posicion::aXML(const string& pPath){

    TiXmlDocument* doc = new TiXmlDocument(pPath.c_str());
    TiXmlDeclaration * decl = new TiXmlDeclaration( "1.0", "", "" );
    doc->LinkEndChild( decl );
    
    doc->LinkEndChild(this->aElementoXML());
    
    TiXmlPrinter printer;
    doc->Accept(&printer);
    return printer.CStr();    
}

void Posicion::parseXML (const string& pDescriptor){

    TiXmlDocument doc;
    doc.Parse(pDescriptor.c_str(), 0, TIXML_ENCODING_UTF8);
    return this->deElementoXML(doc.FirstChildElement());
}

TiXmlElement* Posicion::aElementoXML (){
    
    TiXmlElement * element = new TiXmlElement("Posicion");
    
    element->SetAttribute("x", this->X());
    element->SetAttribute("y", this->Y());
    
    return element;
}

void Posicion::deElementoXML (TiXmlElement* pElemento){

    if (strcmp (pElemento->Value(), "Posicion") == 0)
    {
        this->X(atoi(pElemento->Attribute("x")));
        this->Y(atoi(pElemento->Attribute("y")));
    }
}
